package proyecto.web;

import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
import proyecto.excepcion.DAOExcepcion;
import proyecto.modelo.Paciente;
import proyecto.modelo.Rol;
import proyecto.modelo.Resultado;
import proyecto.service.RolService;

public class RolController extends MultiActionController {

    private RolService rolService;

    public RolService getRolService() {
        return rolService;
    }

    public void setRolService(RolService rolService) {
        this.rolService = rolService;
    }

    public ModelAndView index(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("/admin/rol_mantener");
    }

    public ModelAndView buscar(HttpServletRequest request, HttpServletResponse response) {
        String nombres = request.getParameter("nombre");
        try {
            Collection<Rol> roles = rolService.buscarPorNombre(nombres);
            System.out.println(roles);
            request.setAttribute("roles", roles);
        } catch (DAOExcepcion ex) {
            System.err.println(ex.toString());
        }
        return new ModelAndView("/admin/rol_mantener");
    }

    public ModelAndView buscarFichasPorIdPaciente(HttpServletRequest request, HttpServletResponse response) {
        //String nombres = request.getParameter("nombre");
        HttpSession session = request.getSession();
        Paciente paciente_actual = (Paciente)(session.getAttribute("PACIENTE_ACTUAL"));
        try {
            Collection<Rol> roles = rolService.buscarFichasPorIdPaciente(paciente_actual.getId_paciente());
            System.out.println(roles);
            request.setAttribute("roles", roles);
        } catch (DAOExcepcion ex) {
            System.err.println(ex.toString());
        }
        return new ModelAndView("/intranet_pacientes/listar_fichas_medicas");
    }

    public ModelAndView buscarResultadosPorIdFicha(HttpServletRequest request, HttpServletResponse response) {
        int idFicha = Integer.parseInt(request.getParameter("id_ficha"));
        try {
            Collection<Resultado> resultados = rolService.buscarResultadosPorIdFicha(idFicha);
            System.out.println(resultados);
            request.setAttribute("resultados", resultados);
        } catch (DAOExcepcion ex) {
            System.err.println(ex.toString());
        }
        return new ModelAndView("/intranet_pacientes/resultados_ver");
    }

    public ModelAndView nuevo(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("/admin/rol_nuevo");
    }

    public ModelAndView insertar(HttpServletRequest request, HttpServletResponse response) {
        Rol vo = new Rol();
        vo.setRolNombre(request.getParameter("nombre"));
        vo.setDescripcion(request.getParameter("descripcion"));
        try {
            rolService.insertar(vo);
        } catch (DAOExcepcion e) {
            System.err.println(e.toString());
        }
        return new ModelAndView("redirect:/rol_mantener.htm");
    }

    public ModelAndView eliminar(HttpServletRequest request, HttpServletResponse response) {
        String rolNombre = request.getParameter("rolNombre");
        try {
            rolService.eliminar(rolNombre);
        } catch (DAOExcepcion ex) {
            System.err.println(ex.toString());
        }
        return new ModelAndView("redirect:/rol_mantener.htm");
    }

    public ModelAndView obtener(HttpServletRequest request, HttpServletResponse response) {
        String rolNombre = request.getParameter("rolNombre");
        Rol vo;
        try {
            vo = rolService.obtener(rolNombre);
            request.setAttribute("Rol", vo);
        } catch (DAOExcepcion e) {
            System.err.println("Error");
        }
        return new ModelAndView("/admin/rol_editar");
    }

    public ModelAndView actualizar(HttpServletRequest request, HttpServletResponse response) {
        //String nombre = request.getParameter("rolNombre");
        Rol vo = new Rol();
        vo.setRolNombre(request.getParameter("nombre"));
        vo.setDescripcion(request.getParameter("descripcion"));
        try {
            rolService.actualizar(vo);
        } catch (DAOExcepcion e) {
            System.err.println("Error");
        }
        return new ModelAndView("redirect:/rol_mantener.htm");
    }
}
